Módulo:Gamebox
local getArgs = require('Module:Arguments').getArgs local getGames = require('Module:Gamedata') local p = {} local function makeInvokeFunction(funcName) -- makes a function that can be returned from #invoke, using -- Module:Arguments. return function (frame) local args = getArgs(frame, {parentOnly = true}) return pfuncName(args) end end local stylet = '\n|-\n|style="font-size:100%; text-align:center;background:#222;" colspan=2|' local function cate(catename,sort) if not mw.title.getCurrentTitle():inNamespace('') then return '' end if sort then sort = '|' .. sort else sort = '' end return 'Category:' .. catename .. sort .. '' end local t = { 'image'={'image'}, 'image_width'={'image_width',default='240px'}, 'image_bg'={'image_bg'}, 'japan'={'japan'}, 'romaji'={'romaji'}, 'Desenvolvedor'={'developer'}, 'Publicadora'={'publisher'}, 'Genêro'={'genre'}, 'Plataforma'={'platform(s)','platform'}, 'Japão'={'release-date-japan','releasej'}, Estados Unidos'={'release-date-north-america','releasena'}, 'Europa' ={'release-date-europe','releaseeu'}, 'Austrália'={'release-date-australasia','releaseau'}, 'cname'={'name',default=mw.title.getCurrentTitle().text}, -- Character's name conhecido como'={'aka'}, Japonês'={'japan','kana'}, 'Romaji'={'romaji'}, 'rpname'={'RPname','rpname',h='Revelations Name'}, Aparição'={'first appearance','first'}, 'Afiliação'={'affiliation'}, 'Alinhamento'={'alignment'}, 'Equipe'={'team'}, -- Strange Journey 'Ocupação'={'job','occupation'}, 'Rank'={'rank'}, -- Strange Journey 'Embarcação'={'ship'}, -- Strange Journey 'País'={'country'}, -- Strange Journey 'Razão'={'reason'}, -- Nocturne Demoníaco'={'demonic sponsor','sponsor'}, -- Nocturne 'Origem'={'origin'}, 'Arma'={'weapon'}, Demônio'={'demonpartner'}, -- Devil Child 'Tribo'={'tribe'}, -- DDSaga Arma de Fogo'={'gun'}, Avatar'={'avatar'}, -- DDSaga Atma Avatar Brand'={'brand'}, -- DDSaga Atma brand Location'={'location'}, -- DDSaga Atma brand location de Nascimento'={'birthday','dob'}, 'Idade'={'age'}, 'Zodíaco'={'zodiac'}, 'Altura'={'height'}, 'Perso'={'weight'}, COMP'={'comp'}, -- Devil Survivor 1 character's COMP color Celular'={'cell'}, -- Devil Survivor 2 character's cel phone color 'Residência'={'home'}, Aliado'={'allieddemon'}, -- General-purposed, primarily for Shin Megami Tensei IV Final Demon'={'fatedemon'}, -- Demon fusions unlocked by raising Devil Survivor 2 character's Fate rank Anime'={'animedemon'}, -- Allied demons summoned in Devil Survivor 2 anime Sanguíneo'={'blood','blood type'}, Corpo a Corpo'={'melee'}, à Distância'={'ranged'}, 'Arcana'={'arcana'}, -- Persona series 'Arcana2'={'arcana2',h='Arcana Secundário'}, -- Persona 1 and 2 'Persona'={'persona'}, -- Character's signature Persona(s) 'Classe'={'class'}, -- SMTxFE Mirage'={'miragepartner'}, -- SMTxFE 'Tema'={'theme','song'}, -- Character's theme music 'Gosta'={'likes'}, 'Desgosta'={'dislikes'}, 'Nacionalidade'={'nationality','nation'}, 'Etinia'={'ethnicity','ethnic'}, Japanonês'={'japaneseva','Japanese VA'}, Inglês'={'englishva','English VA'}, } local game_stat_order1 = { 'Desenvolvedor', 'Publicadora', 'Genêro', 'Plataforma', } local game_stat_order2 = { 'Japão', 'os Estados Unidos', 'Europa', 'Austrália', } local char_stat_order = { 'Também conhecido como', 'Nome Japonês', 'Romaji', 'rpname', 'Primeira Aparição', 'Nacionalidade', 'Etinia', 'Afiliação', 'Alinhamento', 'Equipe', 'Ocupação', 'Rank', 'Embarcação', 'País', 'Razão', 'Patrocinador Demoníaco', 'Origem', 'Arma', 'Parceiro Demônio', 'Tribo', 'Tipo Arma de Fogo', 'Atma Avatar', 'Atma Brand', 'Brand Location', 'Data de Nascimento', 'Idade', 'Zodíaco', 'Altura', 'Peso', 'Cor COMP', 'Cor Celular', 'Residência', 'Demônio Aliado', 'Fate Demon', 'Demônio Anime', 'Tipo Sanguíneo', 'Arma Corpo a Corpo', 'Arma à Distância', 'Arcana', 'Arcana2', 'Persona', 'Classe', 'Parceiro Mirage', 'Tema', 'Gosta', 'Desgosta', 'VA Japanonês', 'VA Inglês', } local function get_prop(args) local prop = {} for k, v in pairs(t) do for _, name in ipairs(v) do if argsname then propk = argsname break end end propk = propk or v.default end return prop end p.game = makeInvokeFunction('_game') function p._game(args) local prop = get_prop(args) local game = args1 or args.class or args.game or args.Game or '' local gameg -- Game general style if getGames.gamesgame.fallback then gameg = getGames.gamesgame.fallback -- e.g. 'p3f' and 'p3p' will fall back to 'p3' if applicable. else gameg = game end local gamen = getGames.gamesgame.name -- Full game name local gamegn = getGames.gamesgameg.name -- e.g. 'Persona 3 FES' will fall back to 'Persona 3' if applicable. if not prop.image_bg then prop.image_bg = '#333' end local styleg = '\n|-\n!style="background: ' .. getGames.gamesgameg.colorbg .. ';color: ' .. getGames.gamesgameg.font .. '"' local styleh = styleg .. '|' local stylec = styleg .. ' colspan=2|' local result if prop.image then prop.image = '\n|-\n| style="border-radius:3.5px; background:' .. prop.image_bg .. '" colspan="2" align="center" | ' else prop.image = '' end result = ' ' .. cate('Games') if gameg 'mt1' or gameg 'mt2' then result = result .. cate('Série Megami Tensei') elseif gameg 'smt1' or gameg 'smt2' or gameg 'smtif' or gameg 'smt3' or gameg 'smt9' or gameg 'smtim' or gameg 'smtsj' or gameg 'smt4' then result = result .. cate('Série Shin Megami Tensei') elseif gameg 'lb1' or gameg 'lb2' or gameg 'alb' or gameg 'lb3' or gameg 'lbs' or gameg 'lbnt1' or gameg 'lbnt2' or gameg 'lbnt3' then result = result .. cate('Série Last Bible') elseif gameg 'majin1' or gameg 'majin2' then result = result .. cate('Série Majin Tensei') elseif gameg 'smtds' or gameg 'sh' or gameg 'raidou1' or gameg 'raidou2' then result = result .. cate('Devil Summoner') elseif gameg 'p1' or gameg 'p2is' or gameg 'p2ep' or gameg 'p3' or gameg 'pts' or gameg 'p4' or gameg 'pq' or gameg 'p5' then result = result .. cate('Série Persona') elseif gameg 'childred' or gameg 'childblack' or gameg 'childwhite' or gameg 'childlight' or gameg 'childfire' or gameg 'childice' or gameg 'childmessiah' then result = result .. cate('Devil Children') elseif gameg 'ddsaga1' or gameg 'ddsaga2' then result = result .. cate('Digital Devil Saga') elseif gameg 'desu1' or gameg 'desu2' then result = result .. cate('Série Devil Survivor') end if gameg 'childred' or gameg 'childblack' then result = result .. cate('Devil Children Red/Black Book','!') elseif gameg 'childmessiah' then result = result .. cate('Messiah Riser','!') elseif gameg '' then elseif gameg then result = result .. cate(gamen,'!') end return result end p.char = makeInvokeFunction('_char') function p._char(args) local prop = get_prop(args) local game = args1 or args.class or args.game or args.Game or '' local gameg if getGames.gamesgame.fallback then gameg = getGames.gamesgame.fallback else gameg = game end local gamen = getGames.gamesgame.name local gamegn = getGames.gamesgameg.name local styleg = '\n|-\n!style="background: ' .. getGames.gamesgameg.colorbg .. ';color: ' .. getGames.gamesgameg.font .. '"' local styleh = styleg .. '|' local stylec = styleg .. ' colspan=2|' local result = ' ' if args.Part 'both' or args.Part 'Both' then if game 'p2is' then result = result .. cate(getGames.games'p2is'.name .. ' Characters') .. cate(getGames.games'p2ep'.name .. ' Characters') elseif game 'smtds' then result = result .. cate(gamen .. ' Characters') .. cate(getGames.games'sh'.name .. ' Characters') elseif game 'raidou1' then result = result .. cate(gamen .. ' Characters') .. cate(getGames.games'raidou2'.name .. ' Characters') elseif game 'desu2' then result = result .. cate(gamen .. ' Characters') .. cate(getGames.games'desu2rb'.name .. ' Characters') end elseif args.Part 'All' or args.Part 'all' then if game 'p3' then result = result .. cate(gamen .. ' Characters') .. cate(getGames.games'p3f'.name .. ' Characters') .. cate(getGames.games'p3p'.name .. ' Characters') elseif game 'p4' then result = result .. cate(gamen .. ' Characters') .. cate(getGames.games'p4g'.name .. ' Characters') .. cate(getGames.games'p4a'.name .. ' Characters') .. cate(getGames.games'p4d'.name .. ' Characters') end elseif gamen ~= nil then result = result .. cate(gamen .. ' Characters') end if args.alignment 'Law' then result = result .. cate('Law-Aligned Characters') elseif args.alignment 'Neutral' then result = result .. cate('Neutral-Aligned Characters') elseif args.alignment 'Chaos' then result = result .. cate('Chaos-Aligned Characters') end return result end return p -- --Category:Modules --!